#!/usr/bin/env node
//打印进程的id
// console.log("process id:", process.pid);
// //通过进程id给进程发信号量

// //resume()方法用于等待在控制台中输信息
// process.stdin.resume();

// //nodejs中所有事件响应的程序都是有process.on方法来实现
// //第一个参数是事件的名称，第二个参数是事件的处理回调函数
// process.on('SIGINT', function () {
//   console.log("you press ctrl -c, good bye");
//   process.exit(0);//退出当前进程
// })

// process.on('SIGTSTP', function () {
//   console.log("you press ctrl -z,stop running");
// })


// 引入 Node.js 的 os 模块和 process 模块
const os = require('os');
const process = require('process');

//resume()方法用于等待在控制台中输信息
process.stdin.resume();

// 处理 SIGINT 信号（通常由 CTRL+C 触发）
process.on('SIGINT', () => {
  console.log('Received SIGINT. Exiting gracefully.');
  process.exit(0); // 正常退出
});

// 处理 SIGTSTP 信号（通常由 CTRL+Z 触发）
process.on('SIGTSTP', () => {
  console.log('Received SIGTSTP. Pausing execution.');
  process.once('SIGCONT', () => {
    console.log('Received SIGCONT. Resuming execution.');
  });
  process.kill(process.pid, 'SIGTSTP'); // 挂起进程
});

// 打印所有信号常量
console.log('Signal constants:');
Object.keys(process.binding('constants').os).filter(key => key.startsWith('SIG')).forEach(key => {
  console.log(`${key}: ${process.binding('constants').os[key]}`);
});